package linkedList;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;
/*
* 链表 会根据我们的意愿去指定元素的次序 但如果要查看指定元素却不记得他的位置 就要访问全部元素直到找到为止
* */
public class linkedListTest {
    public static void main(String[] args) {
        //建立一个链表集合
        var a = new LinkedList<String>();
        a.add("Jason");
        a.add("Tom");
        a.add("Jerry");

        var b = new LinkedList<String>();
        b.add("Hello");
        b.add("nice to see you");
        //使用迭代器给链表集合添加元素 （也可以修改 删除） 迭代器描述了集合中的位置，对自然有序的集合使用迭代器添加元素才有意义
        //迭代器
        ListIterator<String> aIter = a.listIterator();
        Iterator<String> bIter = b.iterator();
        //把b的元素加到a上
        while (bIter.hasNext()) {
            if (aIter.hasNext())
                aIter.next();
            aIter.add(bIter.next());
        }
        System.out.println(a);

        //1.把b中的所有元素从a中移除
        a.removeAll(b);
        System.out.println(a);
        //把b的元素都移除
        bIter = b.iterator();//如果没有这句 直接执行下面的语句 输出的b依旧有元素
        //为什么呢？  因为上面迭代器已经迭代到最后了 bIter.next=null 也就没有下面移除的操作
        while (bIter.hasNext()) {
            bIter.next();
            bIter.remove();
        }
        System.out.println(b);
        //2.把b中的所有元素从a中移除
        // 放在这个位置 是没用的 因为b已经空了
        a.removeAll(b);
        System.out.println(a);
    }
}
